/**
 * 防抖
 * @param {function} fn 
 * @param {time} delay//毫秒
 * @returns {function} 
 * 代码在一段时间内只执行一次
 */
 function debounce(fn,delay){
    let timer = null ;
    return function (){
        if( !timer ){
            fn();
        }
        if( timer ){
            clearTimeout(timer);
        }
        timer = setTimeout(()=>{
            timer = null ;
        },delay);
    }
}
/**
 * @param {function} fn
 * @param {time} delay//毫秒
 * @returns {function}
 * 一段时间内重复间隔时间多次执行某一段代码
 */
function throttle(fn,delay){
    let startTime = new Date().getTime();
    return function (){
        let endTime = new Date().getTime();
        if( ( endTime - startTime ) > delay ){
            fn();
            startTime = new Date().getTime();
        }
    }
}
/**
 * 总结：防抖：一段时间内执行一次
 *          控制次数
 *      节流：间隔一段时间重复执行
 *          控制频率
 */